import request from "@/utils/request";

const ALARM_BASE_URL = "/api/v1/alarm";

class AlarmAPI {
  /**
   * 获取告警分页列表
   *
   * @param queryParams 查询参数
   */
  static getPage(queryParams: AlarmPageQuery) {
    return request<any, PageResult<AlarmPageVO[]>>({
      url: `${ALARM_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  }

  /**
   * 获取告警表单详情
   *
   * @param alarmId 告警ID
   * @returns 告警表单详情
   */
  static getFormData(alarmId: number) {
    return request<any>({
      url: `${ALARM_BASE_URL}/${alarmId}/form`,
      method: "get",
    });
  }

  /**
   * 添加用户
   *
   * @param data 用户表单数据
   */
  static add(data: AlarmForm) {
    return request({
      url: `${ALARM_BASE_URL}`,
      method: "post",
      data: data,
    });
  }

  /**
   * 修改用户
   *
   * @param id 用户ID
   * @param data 用户表单数据
   */
  static update(id: number, data: AlarmForm) {
    return request({
      url: `${ALARM_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  }

  /**
   * 修改用户密码
   *
   * @param id 用户ID
   * @param password 新密码
   */
  static updatePassword(id: number, password: string) {
    return request({
      url: `${ALARM_BASE_URL}/${id}/password`,
      method: "patch",
      params: { password: password },
    });
  }

  /**
   * 批量删除用户，多个以英文逗号(,)分割
   *
   * @param ids 用户ID字符串，多个以英文逗号(,)分割
   */
  static deleteByIds(ids: string) {
    return request({
      url: `${ALARM_BASE_URL}/${ids}`,
      method: "delete",
    });
  }

  /**
   * 导出用户
   *
   * @param queryParams 查询参数
   */
  static export(queryParams: AlarmPageQuery) {
    return request({
      url: `${ALARM_BASE_URL}/export`,
      method: "get",
      params: queryParams,
      responseType: "arraybuffer",
    });
  }

  /**
   * 导入用户
   *
   * @param deptId 部门ID
   * @param file 导入文件
   */
  static import(deptId: number, file: File) {
    const formData = new FormData();
    formData.append("file", file);
    return request({
      url: `${ALARM_BASE_URL}/import`,
      method: "post",
      params: { deptId: deptId },
      data: formData,
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  }
}

export default AlarmAPI;

/**
 * 报警分页查询对象
 */
export interface AlarmPageQuery extends PageQuery {
  /** 搜索关键字 */
  keywords?: string;

  /** 处理状态 */
  status?: number;

  /** 告警ID */
  id?: number;

  /** 开始时间 */
  startTime?: string;

  /** 结束时间 */
  endTime?: string;
}

/** 报警分页对象 */
export interface AlarmPageVO {
  /** 设备编号 */
  SN?: string;
  /** 最新报警时间 */
  created_at?: Date;
  /** 报警类型 */
  alarmType?: string;
  /** 报警次数 */
  alarmNum?: string;
  /** 处理状态(1:已处理;0:未处理) */
  status?: number;
  /** 告警ID */
  id?: number;
}

/** 报警表单类型 */
export interface AlarmForm {
  /** 设备编号 */
  SN?: string;
  /** 最新报警时间 */
  created_at?: Date;
  /** 报警类型 */
  alarmType?: string;
  /** 报警次数 */
  alarmNum?: string;
  /** 处理状态(1:已处理;0:未处理) */
  status?: number;
  /** 告警ID */
  id?: number;
}
